﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _05_数组作为参数
{
    class Program
    {
        static void Main(string[] args)
        {

            int[] arr_int1 = { 1, 2, 3, 4, 5,6 };//1+2+3+4
            int[] arr_int2 = { 1, 2, 3, 11, 123, 2222 };//11+123

            Console.WriteLine("-------------简单的例子-----------------");
            Console.WriteLine(ArraySum(arr_int1));
            Console.WriteLine(ArraySum(arr_int2));

            Console.WriteLine("-------------复杂的例子-----------------");
            //ArraySegment就是用这个类截取了数组的一个片段：作者好调皮....
            var segment = new ArraySegment<int>[2]
            {
                new ArraySegment<int>(arr_int1,0,4),
                new ArraySegment<int>(arr_int2,3,2)
            };
            int result = SumOfSeqment(segment);
            Console.WriteLine(result);//148
            Console.ReadKey();
        }
        //ArraySegment<int>[] segment:数组截取的一个片段，里面字段能显示出每个元素的位移量，数量
        static int SumOfSeqment(ArraySegment<int>[] segment)//ArraySegment数组片段(Offset:当前位置,Count：取多少个)
        {
            int num = 0;
            foreach(var item in segment)
            {
                for (int i = item.Offset; i < item.Offset + item.Count; i++)
                {
                    num += item.Array[i];
                }
            }
            return num;
        }
        static int ArraySum(int[] array)
        {
            int result=0;
            foreach (int item in array)
            {
                result += item;
            }
            return result;
        }
    }
}
